/* SPDX-License-Identifier: GPL-2.0 */
/*
 * MAX6675 SPI Thermocouple temperature sensor driver
 *
 * Copyright (C) 2024 Your Name
 */

#ifndef _MAX6675_H_
#define _MAX6675_H_

/* 驱动名称 */
#define DRIVER_NAME "max6675"

/* 调试宏定义 */
#define MAX6675_DEBUG 1
#define max6675_dbg(dev, fmt, ...) \
    do { \
        if (MAX6675_DEBUG) \
            dev_dbg(dev, fmt, ##__VA_ARGS__); \
    } while (0)

/* 错误码定义 */
#define MAX6675_ERR_THERMOCOUPLE_NOT_CONNECTED 0x4
#define MAX6675_ERR_INVALID_DATA              0x7

/* 温度相关常量 */
#define MAX6675_TEMP_MIN          0    /* 最小温度 (°C) */
#define MAX6675_TEMP_MAX          1024 /* 最大温度 (°C) */
#define MAX6675_TEMP_SCALE        4    /* LSB = 0.25°C */
#define MAX6675_MIN_SAMPLE_MS     220  /* 最小采样间隔 */
#define MAX6675_DEFAULT_SAMPLE_MS 1000 /* 默认采样间隔 */

/* 设备数据结构 */
struct max6675_data {
    struct spi_device *spi;
    struct mutex lock;
    u16 last_value;
    unsigned int sample_interval;  /* 采样间隔(ms) */
    bool celsius_mode;            /* true: 摄氏度, false: 华氏度 */
};

/* 温度单位转换函数 */
static inline int celsius_to_fahrenheit(int celsius)
{
    return (celsius * 9 / 5) + 32;
}

#endif /* _MAX6675_H_ */ 